home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS in a Box 7
/
BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso
/
Files
/
Bus
/
S
/
Stock HELPER®.cpt
/
Stock HELPERÆ V0.2
/
stack.txt
< prev
Wrap
Text File
|
1988-03-23
|
9KB
|
283 lines
-- stack: in.2
-- format: 8 (HyperCard 1)
-- flags: 0x0 (none)
-- protect password hash: 0
-- maximum user level: 5 (scripting)
-- window: Rect(x1=0, y1=0, x2=0, y2=0)
-- screen: Rect(x1=0, y1=0, x2=0, y2=0)
-- card dimensions: w=0 h=0
-- scroll: x=0 y=0
-- background count: 4
-- first background id: 19480
-- card count: 8
-- first card id: 36467
-- list block id: 2952
-- print block id: 17075
-- font table block id: 0
-- style table block id: 0
-- free block count: 0
-- free size: 0 bytes
-- total size: 41440 bytes
-- stack block size: 8192 bytes
-- created by hypercard version: 0x00000000
-- compacted by hypercard version: 0x00000000
-- modified by hypercard version: 0x00000000
-- opened by hypercard version: 0x00000000
-- patterns[0]: 0x0000000000000000
-- patterns[1]: 0x8000000008000000
-- patterns[2]: 0x8800220088002200
-- patterns[3]: 0x8888222288882222
-- patterns[4]: 0x88AA22AA88AA22AA
-- patterns[5]: 0xCCAA33AACCAA33AA
-- patterns[6]: 0xEEAABBAAEEAABBAA
-- patterns[7]: 0xEEBBBBEEEEBBBBEE
-- patterns[8]: 0xFFBBFFEEFFBBFFEE
-- patterns[9]: 0xFFBBFFFFFFBBFFFF
-- patterns[10]: 0x8010022001084004
-- patterns[11]: 0xFFFFFFFFFFFFFFFF
-- patterns[12]: 0x8822882288228822
-- patterns[13]: 0x1122448811224488
-- patterns[14]: 0xC4800C6843023026
-- patterns[15]: 0xB130031BD8C00C8D
-- patterns[16]: 0xAA00AA00AA00AA00
-- patterns[17]: 0x8822552288225522
-- patterns[18]: 0x8855225588552255
-- patterns[19]: 0x77DD77DD77DD77DD
-- patterns[20]: 0x8000000000000000
-- patterns[21]: 0xAA55AA55AA55AA55
-- patterns[22]: 0x038448300C020101
-- patterns[23]: 0x8244394482010101
-- patterns[24]: 0x8814224188412214
-- patterns[25]: 0x8080413E080814E3
-- patterns[26]: 0x22048C7422179810
-- patterns[27]: 0xBE808808EB088880
-- patterns[28]: 0x25C8328964244C92
-- patterns[29]: 0xA29C41BE2AC914EB
-- patterns[30]: 0x40A00000040A0000
-- patterns[31]: 0x8040200002040800
-- patterns[32]: 0xAA00800088008000
-- patterns[33]: 0xFF80808080808080
-- patterns[34]: 0x081C22C180010204
-- patterns[35]: 0xFF808080FF080808
-- patterns[36]: 0xF87422478F172271
-- patterns[37]: 0xBF00BFBFB0B0B0B0
-- patterns[38]: 0xFF7FBE5DA2418000
-- patterns[39]: 0xFAF5FAF5A050A050
-- checksum: 0x0
----- HyperTalk script -----
on openStack
Global operationMode,dateforUpdate
global UpdateField,span1,span2,span3
global upArrow,downArrow
global maxDataPoints,minBaseValue
global firstChart,saveLevel
hide message box
hide menubar
put the userLevel into saveLevel
set userLevel to 3
put 16692 into upArrow
put 3584 into downArrow
put 5 into span1
put 15 into span2
put 40 into span3
put 52 into maxDataPoints
put 10000 into minBaseValue
put 7 into firstChart -- number of first chart card
end openStack
on closeStack
global saveLevel
set userLevel to saveLevel
end closeStack
on clearScreen
choose select tool
doMenu select all
doMenu clear picture
end clearScreen
function maxLine what,itemNr
put item itemNr of line 1 of what into result
repeat with i = 2 to the number of lines in what
put max(result,item itemNr of line i of what) into result
end repeat
return result
end maxLine
function minLine what,itemNr
put item itemNr of line 1 of what into result
repeat with i = 2 to the number of lines in what
put min(result,item itemNr of line i of what) into result
end repeat
return result
end minLine
function rounders sum,span
put round(100*(sum/span))/100 into result
return result
end rounders
on ScrolltoLastLine
global operationMode,dateforUpdate,lineCount
if operationMode="Update" then
if dateforUpdate≠item 1 of line lineCount of field "data" then
get line lineCount of field "data"
put it&return&dateforUpdate into line lineCount of field "data"
add 1 to lineCount
get line lineCount of field "data"
put it&"," into line lineCount of field "data"
put lineCount-4 into scrolledLines
if scrolledLines>0 then
multiply scrolledLines by the textheight of field "Data"
set the scroll of field "Data" to scrolledLines
end if
end if
end if
end ScrolltoLastLine
on arrowDirection arrowNr
put "bkgnd button ""e&"Direction "&arrowNr"e into direction
get line arrowNr of field "Directions"
if it>0 then
set the icon of direction to it
show direction
else
hide direction
end if
end arrowDirection
on MovingAverage Avg,avgNr,span,itemNr
global lineCount
global upArrow,downArrow
put 0 into avga
put 0 into avgb
put lineCount into itemCount
put "Average "&avgNr into avgField
if lineCount>=span then
put rounders(Avg,span) into field avgField
else
put empty into field avgField
end if
if lineCount>=span+2 then
if itemNr>0 then
put item itemNr of line itemCount of field "data" into endValue1
subtract 1 from itemCount
put item itemNr of line itemCount of field "data" into endValue2
subtract span-1 from itemCount
put item itemNr of line itemCount of field "data" into pastValue1
subtract 1 from itemCount
put item itemNr of line itemCount of field "data" into pastValue2
else
put -itemNr into lowItem
put lowItem-1 into highItem
put item highItem of line itemCount of field "data" into endValue1
subtract item lowItem of line itemCount of field "data" from endValue1
subtract 1 from itemCount
put item highItem of line itemCount of field "data" into endValue2
subtract item lowItem of line itemCount of field "data" from endValue2
subtract span-1 from itemCount
put item highItem of line itemCount of field "data" into pastValue1
subtract item lowItem of line itemCount of field "data" from pastValue1
subtract 1 from itemCount
put item highItem of line itemCount of field "data" into pastValue2
subtract item lowItem of line itemCount of field "data" from pastValue2
end if
put Avg into Avga
subtract endValue1 from Avga
add pastValue1 to Avga
put Avga into Avgb
subtract endValue2 from Avgb
add pastValue2 to Avgb
put 0 into iconNr
if Avg > Avga then
if Avga>Avgb then
put upArrow into iconNr
end if
else
if Avg < Avga then
if Avga < Avgb then
put downArrow into iconNr
end if
end if
end if
else
put 0 into iconNr
end if
put iconNr into line avgNr of field "Directions"
arrowDirection avgNr
end MovingAverage
on ClearFields
put empty into field "Date of Last Update"
put empty into field "high"
put empty into field "low"
put empty into field "close"
put empty into field "Average 1"
put empty into field "Average 2"
put empty into field "Average 3"
put the number of lines of field "data" into lineCount
repeat with i=1 to 3
put 0 into line i of field "Directions"
arrowDirection i
end repeat
end ClearFields
on TrimDataPoints -- Reduce data points to maxDataPoints
global maxDataPoints,lineCount
repeat while last line of field "data" is empty
delete last line of field "data"
end repeat
repeat while number of lines of field "data" > maxDataPoints
delete line 1 of field "data"
end repeat
put the number of lines of field "data" into lineCount
end TrimDataPoints
on SetforUpdate
global operationMode,dateforUpdate,lineCount
if operationMode="Update" then
if dateforUpdate≠item 1 of line lineCount of field "data" then
get line lineCount of field "data"
put it&return&dateforUpdate into line lineCount of field "data"
add 1 to lineCount
get line lineCount of field "data"
put it&"," into line lineCount of field "data"
put lineCount-4 into scrolledLines
if scrolledLines>0 then
multiply scrolledLines by the textheight of field "Data"
set the scroll of field "Data" to scrolledLines
end if
end if
else
put number of lines of field "data" into lineCount
if lineCount>1 then
scrolltoLastLine
end if
end if
end SetforUpdate
on QuickUpdate
global dateforUpdate,lineCount,cardNr,updateFlag
-- Assumes at card cardNr
put "skip" into updateFlag
put field "Stock Symbol" into StockSymbol
put field "Stock Name" into StockName
put the number of lines of field "data" into lineCount
get line lineCount of field "data"
if dateforUpdate≠item 1 of it then
go card "Update All"
set lockScreen to false
put StockSymbol into field "Symbol"
put StockName into field "Name"
put item 1 of it into field "Last Week"
delete item 1 of it
put it into field "Last Week's Prices"
put dateforUpdate into field "This Week"
put empty into field "This Week's Prices"
set lockScreen to true
else
add 1 to cardNr
end if
end QuickUpdate